package com.lg.concurrent.share_parameter;

import java.util.concurrent.CountDownLatch;

/**
 * 怎么解决一个线程中，横跨若干方法调用，传递需要的对象
 * threadLocal
 * <p>
 * 怎么解决一个线程中，横跨若干层，共享变量的共享，比如一个线程从tomcat controller service dao。
 * <p>
 * threadLocal 可以存储一个线程的局部变量。一个线程从tomcat controller service dao，
 * 不用一层一层的传值，可以将他们的共同变量，放到这个这个线程的threadLocal ，
 * 这个线程还是这个线程，走到那都可以从中拿出共享变量来
 *
 * 如果是一个共享的，那多线程访问的时候会被 共享修改
 */


public class ThreadLocalTest {
    public static void main(String[] args) {
        CountDownLatch countDownLatch = new CountDownLatch(3);
        ThreadLocalThread threadLocalThread = new ThreadLocalThread(countDownLatch);
        ThreadLocalThread threadLocalThread2 = new ThreadLocalThread(countDownLatch);
        ThreadLocalThread threadLocalThread3 = new ThreadLocalThread(countDownLatch);
        threadLocalThread.start();
        threadLocalThread2.start();
        threadLocalThread3.start();
    }

    public void step() {
        System.out.println(ThreadLocalParameter.local.get().get("com.lg.aa"));
    }
}

